home *** CD-ROM | disk | FTP | other *** search
/ The CICA Windows Explosion! / The CICA Windows Explosion! - Disc 2.iso / programr / ole2book.zip / CHAP10.ZIP / CHAP10 / SCHMOO / MAKEFILE < prev    next >
Text File  |  1993-06-22  |  4KB  |  157 lines

  1. #
  2. # MAKEFILE
  3. # Schmoo version 2.0 Chapter 10
  4. #
  5. # Copyright (c)1993 Microsoft Corporation, All Rights Reserved
  6. #
  7. # Kraig Brockschmidt, Software Design Engineer
  8. # Microsoft Systems Developer Relations
  9. #
  10. # Internet  :  kraigb@microsoft.com
  11. # Compuserve:  >INTERNET:kraigb@microsoft.com
  12. #
  13.  
  14. #Add '#' to the next line for 'noisy' operation
  15. !CMDSWITCHES +s
  16.  
  17. #
  18. #Compiler flags
  19. #Use "SET RETAIL=1" from MS-DOS to compile non-debug version.
  20. #
  21. !ifndef RETAIL
  22. CFLAGS  = -c -nologo -Od -AM -Zipe -G2s -W3 -GA -GEs
  23. LINK    = /al:16/ONERROR:NOEXE/CO
  24. DEFS    = -DSTRICT -DDEBUG
  25. !else
  26. CFLAGS  = -c -nologo -Oas -AM -Zpe -G2s -W3 -GA -GEs
  27. LINK    = /al:16/ONERROR:NOEXE
  28. DEFS    = -DSTRICT
  29. !endif
  30.  
  31.  
  32. !ifdef SDI
  33. DOC     = -DSDI
  34. CLASSLIB= classSDI
  35. DIR     = SDI
  36. SRC_DIR = ..
  37. !else
  38. DOC     = -DMDI
  39. CLASSLIB= classMDI
  40. DIR     = MDI
  41. SRC_DIR = ..
  42. !endif
  43.  
  44.  
  45. .SUFFIXES: .h .obj .exe .cpp .res .rc
  46.  
  47. TARGET  = schmoo
  48.  
  49. goal:   cd_build precomp.pch $(TARGET).exe cd_src
  50.  
  51. cd_build:
  52.     cd $(DIR)
  53.  
  54. cd_src:
  55.     cd ..
  56.  
  57. clean:
  58.     cd $(DIR)
  59.     del *.pch
  60.     del *.obj
  61.     del *.res
  62.     del *.exe
  63.     cd ..
  64.  
  65.  
  66. PCHFLAGS= -Yu$(TARGET).h -Fpprecomp.pch
  67.  
  68. INCLS    = $(SRC_DIR)\$(TARGET).h $(SRC_DIR)\schmoole.h $(SRC_DIR)\resource.h
  69. OLELIBS  = compobj storage ole2 bookui
  70. LIBS     = libw mlibcew commdlg bttncur gizmobar stastrip $(CLASSLIB)
  71.  
  72. OBJS1    = $(TARGET).obj client.obj document.obj polyline.obj
  73. OBJS2    = polywin.obj idropsrc.obj idroptgt.obj iclassf.obj
  74. OBJS3    = figure.obj iperstor.obj idataobj.obj ioleobj.obj
  75. OBJS     = $(OBJS1) $(OBJS2) $(OBJS3)
  76.  
  77. RCFILES1 = $(SRC_DIR)\$(TARGET).ico $(SRC_DIR)\document.ico $(SRC_DIR)\about.dlg
  78. RCFILES2 = $(SRC_DIR)\gizmo72.bmp $(SRC_DIR)\gizmo96.bmp $(SRC_DIR)\gizmo120.bmp
  79. RCFILES  = $(RCFILES1) $(RCFILES2)
  80.  
  81.  
  82. #####
  83.  
  84. {$(SRC_DIR)}.cpp{}.obj:
  85.     echo ++++++++++
  86.     echo Compiling $*.cpp
  87.     cl $(CFLAGS) $(PCHFLAGS) $(DEFS) $(DOC) $(SRC_DIR)\$*.cpp
  88.  
  89.  
  90. {$(SRC_DIR)}.rc{}.res:
  91.     echo +++++++++
  92.     echo Compiling Resources
  93.     rc -r -i$(SRC_DIR) $(DEFS) $(DOC) -fo$@ $(SRC_DIR)\$*.rc
  94.  
  95.  
  96. precomp.pch : $(SRC_DIR)\$(TARGET).h $(SRC_DIR)\schmoole.h \
  97.               $(SRC_DIR)\polyline.h
  98.     echo +++++++++
  99.     echo Precompiling $(TARGET).h
  100.     cl $(CFLAGS) $(DEFS) -Yc$(TARGET).h -Fpprecomp.pch -Foprecomp $(SRC_DIR)\precomp.cpp
  101.  
  102.  
  103. #This rule builds a linker response file on the fly depending on debug flags
  104. $(TARGET).exe : $(OBJS) $(TARGET).res $(SRC_DIR)\$(TARGET).def
  105.     echo ++++++++++
  106.     echo Linking $@
  107.     echo precomp.obj +                           > $(TARGET).lrf
  108.     echo $(OBJS1) +                             >> $(TARGET).lrf
  109.     echo $(OBJS2) +                             >> $(TARGET).lrf
  110.     echo $(OBJS3)                               >> $(TARGET).lrf
  111.  
  112.     echo $(TARGET).exe $(LINK)                  >> $(TARGET).lrf
  113.     echo nul/li                                 >> $(TARGET).lrf
  114.     echo $(OLELIBS) +                           >> $(TARGET).lrf
  115.     echo $(LIBS) /NOD/NOE                       >> $(TARGET).lrf
  116.     echo $(SRC_DIR)\$(TARGET).def               >> $(TARGET).lrf
  117.  
  118.     link @$(TARGET).lrf
  119.     del $(TARGET).lrf
  120.     rc -v $(TARGET).res $(TARGET).exe
  121.  
  122.  
  123. ##### Dependencies #####
  124.  
  125. $(TARGET).res : $(SRC_DIR)\$(TARGET).rc $(INCLS) $(RCFILES)
  126.  
  127. #Application level things
  128.  
  129. #The file that does #define INITGUIDS should not use precompiled headers.
  130. $(TARGET).obj : $(SRC_DIR)\$(TARGET).cpp   $(INCLS)
  131.     echo ++++++++++
  132.     echo Compiling $*.cpp
  133.     cl $(CFLAGS) $(DEFS) $(DOC) $(SRC_DIR)\$*.cpp
  134.  
  135. client.obj    : $(SRC_DIR)\client.cpp   $(INCLS)
  136.  
  137. #Document level things
  138. document.obj  : $(SRC_DIR)\document.cpp $(INCLS) $(SRC_DIR)\polyline.h
  139.  
  140.  
  141. idropsrc.obj  : $(SRC_DIR)\idropsrc.cpp $(INCLS)
  142. idroptgt.obj  : $(SRC_DIR)\idroptgt.cpp $(INCLS)
  143.  
  144.  
  145. #Editor level things
  146. polyline.obj  : $(SRC_DIR)\polyline.cpp $(INCLS) $(SRC_DIR)\polyline.h
  147. polywin.obj   : $(SRC_DIR)\polywin.cpp  $(INCLS) $(SRC_DIR)\polyline.h
  148.  
  149.  
  150. #Compound Document Things
  151. iclassf.obj   : $(SRC_DIR)\iclassf.cpp  $(INCLS)
  152.  
  153. figure.obj    : $(SRC_DIR)\figure.cpp   $(INCLS)
  154. iperstor.obj  : $(SRC_DIR)\iperstor.cpp $(INCLS)
  155. idataobj.obj  : $(SRC_DIR)\idataobj.cpp $(INCLS)
  156. ioleobj.obj   : $(SRC_DIR)\ioleobj.cpp  $(INCLS)
  157.